<?php
class VistaHelper extends AppHelper 
{
	var $helpers = array('Html', 'Javascript', 'Form','Ajax','Session','Interfaz');
	var $Html = null;
	var $Javascript = null;
	var $Ajax = null;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion que muestra logo de agropatria en img
 Esta Funcion recibe como parametros:
 $nombre: nombre del sistema a mostrar dentro del layout
 $imagen_src: ruta src de la imagen
 Ejemplo:
        echo $this->Vista->sistema('SISTEMA HOLAMUNDO V-1.0','/img/agropatriahelper.png');
        echo $this->Vista->sistema();
**/
function sistema($nombre='AGROPATRIA S.A.',$imagen_src=null){

if(!isset($imagen_src) and $imagen_src==null and $imagen_src==0){
$imagen_src='/img/agropatriahelper.png';
}

$des='2013';
$has=date('Y');

if ($des==$has)
$fech=$des;
else
$fech=$des.' - '.$has;


echo  "<script type='text/javascript'>

Ext.onReady(function() {
   
    var tooltips = [{        
            title: '$nombre',
            id: 'content-anchor-tip',
            target: 'leftCallout',
            anchor: 'left',
            html: null,
            width: 415,
            autoHide: false,
            closable: false,
            contentEl: 'content-tip', // load content from the page
            
        }];
       
    Ext.each(tooltips, function(config) {
        Ext.create('Ext.tip.ToolTip', config);
    });  

});
</script>
        <div style='display:none;'>
            <div id='content-tip' style='overflow:hidden'>
                <div class='x-clear'></div>
<img src='$imagen_src' alt='AGROPATRIA S.A.' border='0' width='200px' height='79px' align='absmiddle' />
                <ul>
                    <li><br /></li>
                    <li>Empresa de Propiedad Social AGROPATRIA S.A.</li>
    
		    <li><br /></li>
                    <li>Copyright © ".$fech." . Todos los derechos reservados.</li>
                </ul>

            </div>
        </div>
";
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion que muestra imagenes de ayuda en img
 Esta Funcion recibe como parametros:
 $nombre: nombre del sistema a mostrar dentro del layout
 $imagen_src: ruta src de la imagen
 Ejemplo:
        echo $this->Vista->img_ayuda('ayuda requerida',123,'/img/agropatriahelper.png');
**/
function img_ayuda($nombre='AGROPATRIA S.A.',$id='vacio',$imagen_src=null){

if(!isset($imagen_src) and $imagen_src==null and $imagen_src==0){
$imagen_src='/img/agropatriahelper.png';
}

$des='2013';
$has=date('Y');

if ($des==$has)
$fech=$des;
else
$fech=$des.' - '.$has;


echo  "<script type='text/javascript'>

Ext.onReady(function() {
   
    var tooltips = [{        
            title: '$nombre',
            id: 'content-anchor-tip',
            target: 'leftCallout',
            anchor: 'left',
            html: null,
            width: 415,
            autoHide: false,
            closable: false,
            contentEl: 'content-tip$id', // load content from the page
            
        }];
       
    Ext.each(tooltips, function(config) {
        Ext.create('Ext.tip.ToolTip', config);
    });  

});
</script>
        <div style='display:none;'>
            <div id='content-tip$id' style='overflow:hidden'>
                <div class='x-clear'></div>
<img src='$imagen_src' alt='AGROPATRIA S.A.' border='0' width='200px' height='79px' align='absmiddle' />
                <ul>
                    <li><br /></li>
                    <li>Empresa de Propiedad Social AGROPATRIA S.A.</li>
    
		    <li><br /></li>
                    <li>Copyright © ".$fech." . Todos los derechos reservados.</li>
                </ul>

            </div>
        </div>
";



}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 Funcion loading
 Esta Funcion recibe como parametros:
 $tipo: ('cargando','guardando')
 Nota: Esta funcion es usada solo por el ajax y es llamada unicamente en el layout

 Ejemplo:
        echo $this->Vista->loading('cargando'); // ajax cargando
        echo $this->Vista->loading('guardando');// ajax guardando
**/
function loading($tipo='cargando'){

if($tipo=='cargando'){
 echo"
<div id='cargando' style='display:none;
position: absolute; width: 100%; height: 100%;
z-index: 400000;
'>
<table border='0' cellpadding='15' cellspacing='15' width='50%' height='90%' align='center' style='border:10;' valign='center'>
<tr>
<td>
</td>
<td width='500px' height='500px' align='center'>
<div style='width: 240px; height: 80px;
border-radius: 5px 5px 5px 5px;
border: 1px double rgb(100, 100, 100);
border-radius:10px;
padding: 4px;
' class='cargandodiv'
>
<table border='0' cellpadding='15' cellspacing='15' width='100%' height='100%' align='center' valign='center'>
<tr>
<td width='80px' align='center'>
<!--<img src='../img/guardar/download.gif' border='0' />-->
<img src='../img/guardar/loading.gif' border='0' width='60px' height='60px'/>
</td>
<td width='160px' height='70px' align='center'>
<font class='fontcargandodiv' style='font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; font-size: 1.5em;'>
Cargando...
</font>
</td>
</tr>
</table>
</div>	
</td>
<td>
</td>
</tr>

</table>
</div>";

}
else if($tipo=='guardando'){

echo "
<div id='guardando' style='display:none;
position: absolute; width: 100%; height: 100%;
z-index: 400000;
background-color: rgba(0, 0, 255, 0.1);
color: #fff; padding: 15px;

'>
<table border='0' cellpadding='15' cellspacing='15' width='50%' height='90%' align='center' style='border:10;' valign='center'>
<tr>
<td>
</td>

<td width='500px' height='500px' align='center'>
<div style='width: 240px; height: 80px;
border-radius: 5px 5px 5px 5px;
border: 1px double rgb(100, 100, 100);
border-radius:10px;
padding: 4px;
' class='cargandodiv'>
<table border='0' cellpadding='15' cellspacing='15' width='100%' height='100%' align='center' valign='center'>

<tr>
<td width='80px' align='center'>
<img src='../img/guardar/download.gif' border='0' width='40px' height='60px'/>
<!--<img src='../img/guardar/loading.gif' border='0' width='60px' height='60px'/>-->
</td>

<td width='160px' height='70px' align='center'>
<font  class='fontcargandodiv' style='color:font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; font-size: 1.5em;'>
Guardando...
</font>
</td>

</tr>
</table>
</div>	
</td>
<td>

</td>
</tr>
</table>
</div>";
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion loading
 Esta Funcion recibe como parametros:
 $tipo: ('cargando','guardando')
 Nota: Para el uso de esta funcion deben existir los paneles ('west-panel','tabpanelss')
 esta funcion expande o no los paneles de acuerdo a su estado

 Ejemplo:
        echo $this->Vista->lisamplia('identificador_de_la_tabla');
**/
function lisamplia($identificador){

echo $valor="<script type='text/javascript'>
            Ext.get(\"".$identificador."\").on('dblclick', function(){
            var w = Ext.getCmp('west-panel');
       	    var h = Ext.getCmp('tabpanelss');
	          h.collapsed ? h.expand() : h.collapse();
            w.collapsed ? w.expand() : w.collapse();
	        });
					</script>";

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


/**
 WARNING: si existe un error cuelga la vista
 Funcion tipsayuda
 Esta Funcion recibe como parametros:
 $nombre: identificador del campo "id"
 $texto: texto informativo del campo
 $tipo:
				'listado: Ampliar tabla',
				'info: Informacion',
				'modi': Modificar',
				'nuevo: Nuevo Registro',
				'buscador: Busqueda por filtros',
				'ver: Ver datos',
				'calen: Calendario',
				'pdf': Impresion PDF',
				'borrar: Borrar Datos',
				'estatus: Cambiar Estatus',
				'si no existe se ve asi "Ayuda: "'
 $size: tamaño de la ayuda
 Ejemplo:
        echo $this->Vista->tipsayuda('identificador','campo de nuevo registro','listado','100');
        echo $this->Vista->tipsayuda('identificador','campo de nuevo registro');
**/
function tipsayuda($nombre,$texto,$tipo=null,$size='250'){
$texto=ucwords(strtolower($texto));
if($tipo=='listado')
$title='Ampliar tabla';
else if($tipo=='info')
$title='Informaci&oacute;n:';
else if($tipo=='modi')
$title='Modificar:';
else if($tipo=='nuevo')
$title='Nuevo Registro:';
else if($tipo=='buscador')
$title='Busqueda por filtros:';
else if($tipo=='ver')
$title='Ver datos:';
else if($tipo=='calen')
$title='Calendario: '.date('d-m-Y');
else if($tipo=='pdf')
$title='Impresi&oacute;n PDF:';
else if($tipo=='borrar')
$title='Borrar Datos:';
else if($tipo=='estatus')
$title='Cambiar Estatus:';
else
$title="Ayuda: ";
//$title="Ayuda en campo: $nombre";

$valor="<script type='text/javascript'>
Ext.require([
    'Ext.tip.*'
]);

Ext.onReady(function() {
    var tooltips = [{
            target: '$nombre',
            title: '$title',
            width: $size,
            html: '$texto',
            trackMouse: true
        }];
Ext.each(tooltips, function(config) {
        Ext.create('Ext.tip.ToolTip', config);
    });  
	//Ext.Msg.alert('Failure', 'Failed to load locale file.');
    Ext.QuickTips.init();
});
</script>";

echo $valor;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion validarsession
 Esta Funcion recibe como parametros:
 $nombre: identificador del campo "id"
 $texto: texto informativo del campo
 $tipo:
				'listado: Ampliar tabla',
				'info: Informacion',
				'modi': Modificar',
				'nuevo: Nuevo Registro',
				'buscador: Busqueda por filtros',
				'ver: Ver datos',
				'calen: Calendario',
				'pdf': Impresion PDF',
				'borrar: Borrar Datos',
				'estatus: Cambiar Estatus',
				'si no existe se ve asi "Ayuda: "'
 $size: tamaño de la ayuda
 Ejemplo:
        echo $this->Vista->tipsayuda('identificador','campo de nuevo registro','listado','100');
        echo $this->Vista->tipsayuda('identificador','campo de nuevo registro');
**/
function validarsession($dats=null,$controlador=PRINCIPAL) {
$ventana='session'.$dats;
$titulo='SESION CERRADA';
$divlistado='vista';
$div=$dats.'datosdevalidaciondelsistema';


$titulo=$this->Interfaz->mayus($titulo);
$div2=$div.'_2';

$valor="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";


$valor.="
<style type='text/css'>
.userx {
 background-image:url(img/login/user_comment.png);
}
.cross {
    background-image:url(img/iconos/icons/cross.gif);
}
.accept {
    background-image:url(img/iconos/icons/accept.png);
}
</style>
<script type='text/javascript'>
Ext.onReady(function() {
      var $ventana ,
      $ventana=Ext.create('Ext.window.Window', {
			id : '$ventana',
			title: '$titulo',
      layout: 'fit',
			width: '450',
			height: '250',
			minWidth: '450',
			minHeight: '250',
			maxWidth: '450',
			maxHeight: '250',
	    layoutManagedWidth:2,
    	contentEl: '$div2',
      //   maximizable: true,
	    iconCls: 'userx',
    	animateTarget: 'msjsessioncerrada',
	    modal: true,
   	  closable: true,
		  hideLabel: true,
     //		floatable: true,
	   //	bodyStyle: 'padding: 5px;background-color:#FFFFFF;',
 		 ";

$valor.="

 	    buttons: [{

	             text: 'Cancelar',
					     iconCls: 'cross',
               handler: function() {
										     $ventana.hide();
											   $ventana=null;
												 //  this.up('$ventana').hide();
                    							  }
                 },{

                    text: 'Entrar',
		                iconCls: 'accept',
                    handler: function() {
                    //alert('$dats');
										//EnviaFormulario('actulissszassacee','/$controlador/autenticacion/vx$ventana','$dats');
											EnviaFormulario('".DOCULTO."','/$controlador/autenticacion/vx$ventana','$dats');
                    //    this.up('window').hide();
	                  }
                   }]
";

$valor.="
 });
$ventana.show();

});

</script>";

$valor.="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';</script>";
$valor.='<META HTTP-EQUIV=Refresh CONTENT="0; URL=/'.LOGIN.'">';
echo $valor;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion paginador_inicio
 Nota: Esta funcion depende de otras funciones ver ejemplo->
 Ejemplo:
        $this->Vista->paginador_inicio(); // actual
        $this->Vista->paginador_td();
        $this->Vista->paginador_fin();
**/
function paginador_inicio() {

$mktime=mktime(date('his'));
$valor="<script type='text/javascript'>
Ext.require([
  'Ext.ux.data.PagingMemoryProxy',
  'Ext.ux.ProgressBarPager'
//  'Ext.ux.SlidingPager'
]);
Ext.onReady(function(){
    var myData".$mktime." = [ ";
echo $valor;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion paginador_td
 Esta funcion recibe como parametro
 $busq: cadena de busqueda devuelta por el buscador
 $data: cadena a mostrar en el td, si se identifica un campo con: esto monta dicho icono
   $tyn[$i][$z]='estatus_1'=> "iconos/icons/add.png"
   $tyn[$i][$z]='estatus_0'=> "iconos/icons/delete.gif"
   $tyn[$i][$z]='activo'=> "iconos/icons/_tick.png"
   $tyn[$i][$z]='inactivo'=> "iconos/icons/cross.gif"
   $tyn[$i][$z]='masculino'=> "iconos/icons/user.png"
   $tyn[$i][$z]='femenino'=> "iconos/icons/user_female.png"

 Nota: Esta funcion depende de otras funciones ver ejemplo->
 Ejemplo:
        $this->Vista->paginador_inicio();
        $this->Vista->paginador_td($busq,array(
																	array($data[$i]['Modelo']['nombre']),
																	array($data[$i]['Modelo']['estatus']),
																	array($i,$ver,$modificar,$pdfl,$pdft)
																	)
																	); // actual
        $this->Vista->paginador_fin();
**/
function paginador_td($busq,$data,$no=0){
    $valor="";
    $tyn = array();
    $valor.="[";
    for($i=0;$i<count($data);$i++){
        $tyn[$i] =$data[$i] ;
       
        if($no){
             $valor.="'".$tyn[$i][0]."',";
        }
        else{
            if(count($tyn[$i])==2 and $tyn[$i][1]=='img'){
                $valor.="'".$this->colorear2($busq,$tyn[$i][0],0)."',";
            }
            else if(count($tyn[$i])==1){
                for($z=0;$z<count($tyn[$i]);$z++){
                    if($tyn[$i][$z]==='estatus_1'){
                        $i_act= $this->Interfaz->img("iconos/icons/add.png",null,null,15,15);
                        $valor.="'".$i_act."',";
                    }
                    else if($tyn[$i][$z]==='estatus_0'){
                        $i_inc= $this->Interfaz->img("iconos/icons/delete.gif",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='activo'){
                        $i_inc= $this->Interfaz->img("iconos/icons/_tick.png",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='inactivo'){
                        $i_inc= $this->Interfaz->img("iconos/icons/cross.gif",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='masculino'){
                        $i_inc= $this->Interfaz->img("iconos/icons/user.png",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='femenino'){
                        $i_inc= $this->Interfaz->img("iconos/icons/user_female.png",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else{
                        @$vads=explode('_ayudax_',$tyn[$i][$z]);
                        if(isset($vads[1]))
                        {
                            $tyn[$i][$z]=str_replace('_ayudax_','',$tyn[$i][$z]);
                            $valor.="'".$tyn[$i][$z]."',";
                        }                       
                        else
                            $valor.="'".$this->colorear2($busq,$tyn[$i][$z])."',";
                    }
                }
            }
            else{
                $valor.="'";
                for($z=1;$z<count($tyn[$i]);$z++){
                    if(count($tyn[$i])==($z+1)){
                        @$vads=explode('_ayudax_',$tyn[$i][$z]);
                        if(isset($vads[1])){
                            $tyn[$i][$z]=str_replace('_ayudax_','',$tyn[$i][$z]);
                            $valor.=" ".$tyn[$i][$z]."',";
                        }                       
                        else
                            $valor.=" ".$tyn[$i][$z]."'";
                    }else{
                        $valor.=" ".$tyn[$i][$z]."";
                    }
                }
            }
        }
        
    }
    $valor.="],";
    echo $valor;
}

function paginador_td_nuevo($busq,$data,$no=0){
    $valor="";
    $tyn = array();
    $valor.="[";
    for($i=0;$i<count($data);$i++){
        $tyn[$i] =$data[$i] ;
       
        if($no){
             $valor.="'".$tyn[$i][0]."',";
        }
        else{
            if(count($tyn[$i])==2 and $tyn[$i][1]=='img'){
                $valor.="'".$tyn[$i][0]."',";
                
            }
            else if(count($tyn[$i])==1){
                for($z=0;$z<count($tyn[$i]);$z++){
                    if($tyn[$i][$z]==='estatus_1'){
                        $i_act= $this->Interfaz->img("iconos/icons/add.png",null,null,15,15);
                        $valor.="'".$i_act."',";
                    }
                    else if($tyn[$i][$z]==='estatus_0'){
                        $i_inc= $this->Interfaz->img("iconos/icons/delete.gif",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='activo'){
                        $i_inc= $this->Interfaz->img("iconos/icons/_tick.png",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='inactivo'){
                        $i_inc= $this->Interfaz->img("iconos/icons/cross.gif",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='masculino'){
                        $i_inc= $this->Interfaz->img("iconos/icons/user.png",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else if($tyn[$i][$z]==='femenino'){
                        $i_inc= $this->Interfaz->img("iconos/icons/user_female.png",null,null,15,15);
                        $valor.="'".$i_inc."',";
                    }
                    else{
                        @$vads=explode('_ayudax_',$tyn[$i][$z]);
                        if(isset($vads[1]))
                        {
                            $tyn[$i][$z]=str_replace('_ayudax_','',$tyn[$i][$z]);
                            $valor.="'".$tyn[$i][$z]."',";
                        }                       
                        else{
                            if($no) $valor.="'".$tyn[$i][0]."',";
                            else $valor.="'".$this->colorear2($busq,$tyn[$i][$z])."',";
                        }
                            
                    }
                }
            }
            else{
                $valor.="'";
                for($z=1;$z<count($tyn[$i]);$z++){
                    if(count($tyn[$i])==($z+1)){
                        @$vads=explode('_ayudax_',$tyn[$i][$z]);
                        if(isset($vads[1])){
                            $tyn[$i][$z]=str_replace('_ayudax_','',$tyn[$i][$z]);
                            $valor.=" ".$tyn[$i][$z]."',";
                        }                       
                        else
                            $valor.=" ".$tyn[$i][$z]."'";
                    }else{
                        $valor.=" ".$tyn[$i][$z]."";
                    }
                }
            }
        }
        
    }
    $valor.="],";
    echo $valor;
}

function colorear2($busq='',$cadena,$posicion=1){

if(isset($busq) and $busq!='' and $busq!=null){
$cadena=str_replace('<input type="text" readonly="true" value="','',$cadena);
$cadena=str_replace('" style="border:0;background-color:transparent;" />','',$cadena);
}

if($posicion==1){
 @$nombrex= str_replace(strtolower($busq),'<font id="resf1'.date('is').'" color="#FF0000" style="background-color:#D9E7F8;"><b>'.@ucwords($busq).'</b></font>',strtolower($cadena));
 $nombrex=strtr(strtoupper($nombrex),"àèìòùáéíóúçñäëïöü","ÀÈÌÒÙÁÉÍÓÚÇÑÄËÏÖÜ");
}
else{
 $nombrex= str_replace(/*strtolower(*/$busq/*)*/,'<font id="resf1'.date('is').'" color="#FF0000" style="background-color:#D9E7F8;"><b>'.@ucwords($busq).'</b></font>',/*strtolower(*/$cadena/*)*/);
 $nombrex=strtr(/*strtoupper(*/$nombrex/*)*/,"àèìòùáéíóúçñäëïöü","ÀÈÌÒÙÁÉÍÓÚÇÑÄËÏÖÜ");

}


//$nombrex='<input type="text" value="'.$cadena.'" style="border:0;background-color:transparent;" />';


 return $nombrex;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion paginador_fin
 Esta funcion recibe como parametro
 $pag: cantidad de registro por pagina "paginador"
 $data= titulos del listado en esta forma
 array(
			 array('NOMBRES Y APELLIDOS'),
			 array('CEDULA','80'),
			 array('OPCIONES','85','c')
 			 );

 Nota: Esta funcion depende de otras funciones ver ejemplo->
 Ejemplo:
        $this->Vista->paginador_inicio();
        $this->Vista->paginador_td();
        $this->Vista->paginador_fin(20,$array); // actual
**/
function paginador_fin($pag=20,$data= array(),$paginador=1,$numeracion=1,$listado='Registros') {


$titulos = array();

for($i=0;$i<count($data);$i++){
if(!isset($data[$i][1]))$data[$i][1]='auto';
if(isset($data[$i][2]) and $data[$i][2]=='c')$data[$i][2]='center';
else if(isset($data[$i][2]) and $data[$i][2]=='r')$data[$i][2]='right';
else $data[$i][2]='left';
$titulos[] = array('id'=>'x'.$i,'title'=>$data[$i][0],'width'=>$data[$i][1],'align'=>$data[$i][2]);
$accios='OPCIONES';
}

$cantpag=$pag;
$mktime=mktime(date('his'));

$valor="
    ];
		";
$valor.="
    // example of custom renderer function
    function change(val){
        if(val > 0){
            return '<span style=\"color:green;\">' + val + '</span>';
        }else if(val < 0){
            return '<span style=\"color:red;\">' + val + '</span>';
        }
        return val;
    }

    // example of custom renderer function
    function pctChange(val){
        if(val > 0){
            return '<span style=\"color:green;\">' + val + '%</span>';
        }else if(val < 0){
            return '<span style=\"color:red;\">' + val + '%</span>';
        }
        return val;
    }

    // register model
    Ext.define('Company', {
        extend: 'Ext.data.Model',
        idProperty: 'company',
        fields: [
";

 for($i=0; $i<count($titulos); $i++){ 
$valor.="
		 {name: '".$titulos[$i]["id"]."'},";
 } 

$valor.="
        ]  
    });
    ";

$valor.="
    // create the data store
    var store = Ext.create('Ext.data.Store', {
        model: 'Company',
        remoteSort: true,
        pageSize: ".$cantpag.",
        proxy: {

            type: 'pagingmemory',

            data: myData".$mktime.",
            reader: {
                type: 'array'
            }
        }
    });
    
    // create the Grid
    var grid".$mktime." = Ext.create('Ext.grid.Panel', {
      //  title:'Progress Bar Pager',
				border: 0,
        store: store,
   //     columnLines: true,

        columns: [
";

	if($numeracion===1){
				$valor.="
				      	        {xtype:'rownumberer',
							text: '#',
							width: 35,
						//	locked   : true,
						 },";
	}

 for($i=0; $i<count($titulos); $i++){ 
$id=str_replace(' ','',$titulos[$i]['title']);
$id=str_replace('%','',$id);$id=str_replace('"','',$id);$id=str_replace('?','',$id);$id=str_replace('¿','',$id);$id=str_replace('#','',$id);$id=str_replace('°','',$id);
$id=str_replace('.','',$id);$id=str_replace(',','',$id);$id=str_replace(';','',$id);$id=str_replace(':','',$id);$id=str_replace('|','',$id);$id=str_replace('$','',$id);
$id=str_replace('á','',$id);$id=str_replace('é','',$id);$id=str_replace('í','',$id);$id=str_replace('ó','',$id);$id=str_replace('ú','',$id);$id=str_replace('ñ','',$id);
$id=str_replace('Á','',$id);$id=str_replace('É','',$id);$id=str_replace('Í','',$id);$id=str_replace('Ó','',$id);$id=str_replace('Ú','',$id);$id=str_replace('Ñ','',$id);

$valor.="
             {
			";

							 if($titulos[$i]["title"]=='#'){
						$valor.="		locked   : true,";
							 }

		if(isset($titulos[$i]["align"])){
			$valor.="	align: '".$titulos[$i]["align"]."',";
		}

	$valor.="
	    //    tdAttrs: { valign: 'top' },	
	//	header: 'Price',
                text: '".$titulos[$i]["title"]."',
					";
									
								 if($titulos[$i]["title"]==$accios){ 
							  $valor.="	sortable: false,//xtype:'button',";
                 }else{
								$valor.=" sortable: true, ";
								 }
          $valor.="      
                dataIndex: '".$titulos[$i]['id']."', ";
							  if(!isset($titulos[$i]["width"]) or $titulos[$i]["width"]=='auto'){
					$valor.=" flex: 1";
                 }else{
					$valor.="width: ".$titulos[$i]['width'].",";
								}
$valor.="            },           ";

}

$valor.="
				],
        stripeRows: true,
        height:'100%',
        width:'100%',
        frame:false,
        //resizable: {
        //   handles: 's',
        //   minHeight: 100
        //},
";

	if($paginador===1){
	$valor.="
        bbar: Ext.create('Ext.PagingToolbar', {
            listeners: {
                afterrender : function() {
                    this.child('#refresh').hide();
                }
            },
            pageSize: ".$cantpag.",
            store: store,
            displayInfo: true,

						displayMsg: '{0}&nbsp;-&nbsp;{1}&nbsp;de&nbsp;{2}&nbsp;$listado',
            plugins: Ext.create('Ext.ux.ProgressBarPager', {})
				//		plugins: Ext.create('Ext.ux.SlidingPager', {})
        })
    
";
       }
$valor.="
});
    grid".$mktime.".render('mitabladiv".$mktime."');

    store.load();
});
</script>
<div id='mitabladiv".$mktime."'></div>";

echo $valor;

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
Esta funcion crea una ventana json "POR CULMINAR DOCUMENTACION"
$divlistado= donde hace el llamado
$div= importante este va como nombre del div y del div_2 y debe estar en la vista
$titulo= titulo de la ventana
$url= controlador y vista a donde va el formulario 
$formulario= nombre del formulario a llamar
$tipo= monta botones de guardar y cerrar debo documentar
$animation= animacion de la ventana pero depende de siempre tener el id del div
$width= tamaño en width de la ventana por defecto esta en 80%
$height= tamaño en height de la ventana por defecto esta en 80%
 Ejemplo:

        $this->Vista->ventana($divlistado,$div,'NUEVO REGISTRO','Tucontrolador/tufuncion',$formulario,'guardar',1,'80%','85%');
				$this->Vista->ventana($divlistado,$div,'NUEVO REGISTRO');
**/
function ventana($divlistado='vista',$div=null,$titulo='',$url=null,$formulario=null,$tipo=null,$animation=0,$width='80%',$height='80%',$id_ventana=null) {

$tipo=strtolower($tipo);

if(!isset($id_ventana) or empty($id_ventana)) $id_ventana="vent_".mktime(date('his'));


if($tipo=='buscar'){
$icono='search';
}
else{
$icono='grid';
}

if($animation==1)$animation="animateTarget: '".$div."',"; 
else if($animation==0)$animation="animateTarget: 'title_".DLOAD."',";
else $animation="animateTarget: '$animation',";


$titulo=$this->Interfaz->mayus($titulo);
$div2=$div.'_2';
$valor="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";
$valor.="
<style type='text/css'>

.search {
    background-image:url(img/iconos/icons/search.png);
background-size: 16px 16px;
}
.grid {
    background-image:url(img/iconos/icons/grid.png);
}
.folder_wrench {
    background-image:url(img/iconos/icons/folder_wrench.png);
}
.gogle {
    background-image:url(img/iconos/icons/gogle.png);
}
.plugin_add {
    background-image:url(img/iconos/icons/plugin_add.png);
}
.gogle_palena {
    background-image:url(img/iconos/icons/gogle_palena.png);
}
.book {
    background-image:url(img/iconos/icons/book.png);
}
.cross {
    background-image:url(img/iconos/icons/cross.gif);
}
.accept {
    background-image:url(img/iconos/icons/accept.png);
}
</style>

<script type='text/javascript'>

Ext.onReady(function() {
    var ventana ,
    ventana=Ext.create('Ext.window.Window', {
       id : '$id_ventana',
			title: '$titulo <span id=\'title_filset_ventna\'></span>',
      layout: 'fit',
      width: '$width',
      height: '$height',
      minWidth: '30%',
			minHeight: '40%',
			layoutManagedWidth:2,
    	contentEl: '$div2',
      maximizable: true,
			iconCls: '$icono',
			".$animation."
		  //	animateTarget: 'menu0',
		  //  collapsed: true,
		  //  collapsible: true,
			constrain: true,
			modal: true,
			autoScroll: true,
/*  
	toggle:true,
        frame: true,
	resizable: true,

*/
    closable: true,
	//closeAction: 'win',
		hideLabel: true,
		floatable: true,
		bodyStyle: 'padding: 5px;background-color:#FFFFFF;',
 		items: [/*{
                    region: 'west',
                    title: 'Menu de Opciones',
                    width: 200,
                    split: true,
                    floatable: false,
		    contentEl: '".DVENTANA."'
                }*/]

";

if($url!=null and $formulario!=null and $tipo=='productor'){
$valor.="
,
 	    buttons: [{
                   contentEl: '".$formulario."botnesventana1'
                      },
								{
                   contentEl: '".$formulario."botnesventana2'
                      },
								{
                   contentEl: '".$formulario."botnesventana3'
                      },]
";
}
else if($url!=null and $formulario!=null and $tipo=='guardar'){
$valor.="
,
 	    buttons: [   {
                    text: 'Guardar',
		  						  iconCls: 'accept',
                    handler: function() {
    		            //  this.up('window').hide();
										EnviaFormulario('".$divlistado."','".$url."','".$formulario."','guardando');
                    }
     
                }]
";
}
else if($url!=null and $formulario!=null and $tipo=='buscar'){
$valor.="

,
 	    buttons: [/*{
                    text: 'Cancelar',
		    iconCls: 'cross',
                    handler: function() {

                     ventana.hide();
	             ventana=null;
			//  this.up('ventana').hide();
                    }
                },*/ {

                    text: 'Buscar',
		  						  iconCls: 'accept',
                    handler: function() {
    		            //  this.up('window').hide();
										EnviaFormulario('".$divlistado."','".$url."','".$formulario."','cargando');

                    }
     
                }]
";
}







$valor.="
    });
ventana.show();

});

</script>";

$valor.="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";
echo $valor;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
 WARNING: si existe un error cuelga la vista
 Funcion upload
 Esta funcion recibe como parametro:
 $titulo: titulo de la ventana SUBIR ARCHIVO
 $campoimagen: identificador de input que llama la vista
 $permitidos: array() de archivos permitidos
 
 Ejemplo:
   $this->Vista->upload('SUBIR FOTO','boton',array('txt','sql','gif','pdf','doc'));

**/
function upload($titulo='SUBIR ARCHIVO',$campoimagen=null,$permitidos=array()){

$nop=array('php','ctp','html','htm');
for($j=0;$j<count($nop);$j++)
{
	if(in_array($nop[$j],$permitidos))
	{
		$indice= array_search($nop[$j],$permitidos);
		$permitidos[$indice]="INGDA_INGJC";
	}
}

$permitidos=serialize($permitidos);

$formu=mktime(date("his"));

$animation=0;
if($animation==1)$animation="animateTarget: '".$div."',"; else$animation="animateTarget: 'title_".DLOAD."',";
$div=DVENTANA;
$titulo=$titulo;
$div2=$div.$formu.'_2';
$valor="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";
$valor.="
<style type='text/css'>
.table_refresh {
    background-image:url(img/iconos/icons/table_refresh.png);
}
</style>

<script type='text/javascript'>
Ext.onReady(function() {
    var ventana$formu ,
    ventana$formu=Ext.create('Ext.window.Window', {
				id:'vent$formu',
				title: '$titulo',
        layout: 'fit',
        width: '515',

        height: '120',
			  minWidth: '515',
			  minHeight: '120',
			  maxWidth: '515',
			  maxHeight: '120',

	      layoutManagedWidth:2,
      	contentEl: '$div2',
        maximizable: false,
				iconCls: 'table_refresh',
				".$animation."
				constrain: true,
				modal: true,
				autoScroll: false,
 			  closable: true,
				//closeAction: 'win',
				hideLabel: true,
				floatable: true,
				bodyStyle: 'background-color:#D9E7F8;'
";
$valor.="
    });
ventana$formu.show();
});
</script>";

$valor.="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";
$valor.="<div id='".$div2."' style='display:none;' class='x-hide-display'>";
$valor.="<script type='text/javascript'>

/*
Ext.require([

    'Ext.form.field.File',
    'Ext.form.Panel',
    'Ext.window.MessageBox'
]);
*/

Ext.onReady(function(){

    var msg = function(title, msg) {

        Ext.Msg.show({
            title: title,
            msg: msg,
            minWidth: 250,
            modal: true,
            icon: Ext.Msg.INFO,
            buttons: Ext.Msg.OK
        });
    };

    Ext.create('Ext.form.Panel', {
        renderTo: 'fi-form$formu',
        width: 500,
				border: 0,
				id: 'for$formu',
        frame: false,
       // title: 'File Upload Form',
        bodyPadding: '10 10 10 10',
				bodyStyle: 'padding: 5px;background-color:#D9E7F8;',

        defaults: {
            anchor: '100%',
            allowBlank: false,
            msgTarget: 'side',
            labelWidth: 50
        },

        items: [/*{
            xtype: 'textfield',
            fieldLabel: 'Name'
        },*/{
            xtype: 'filefield',
             id: 'form-file$formu',
            emptyText: 'Seleccione un archivo',
					//	contentEl: 'zxcvbnm',
            fieldLabel: 'Archivo',
				  	//hideLabel: true,
            name: 'photo-path',
					//	align: 'center',
           buttonText: 'Buscar',
           buttonConfig: {
                iconCls: 'upload-icon'
            }
        }

],

        buttons: [{
            text: 'Subir',

						iconCls: '_inbox_upload',
            handler: function(){
                var form = this.up('form').getForm();



                if(form.isValid()){
                    form.submit({
                        url: 'file-upload.php?validate=12344321333&tipo=$permitidos',
                        waitMsg: 'Subiendo Archivo...',
                        success: function(fp, o) {
                        msg(o.result.tipo, '' + o.result.file + '');
												document.getElementById('$campoimagen').value=o.result.archivo;
		 										var h = Ext.getCmp('form-file$formu');
												h.show ? h.hide() : h.hide();
												h = null;
		 										var h = Ext.getCmp('for$formu');
												h.show ? h.hide() : h.hide();
												h = null;
		 										var h = Ext.getCmp('vent$formu');
												h.show ? h.hide() : h.hide();
												h = null;
             
												 }

                    });


                }
            }
        },{
            text: 'Reset',
						iconCls: 'cross',

            handler: function() {
                this.up('form').getForm().reset();
            }
        }]
    });

});

</script>
    <style type='text/css'>
        .upload-icon {
            background: url('../shared/icons/fam/image_add.png') no-repeat 0 0 !important;
        }
				._inbox_upload {
								    background: url('../shared/icons/fam/_inbox_upload.png') no-repeat 0 0 !important;
				}
				.cross {
								    background: url('../shared/icons/fam/cross.gif') no-repeat 0 0 !important;

				}
        #fi-button-msg {
            border: 2px solid #ccc;
            padding: 5px 10px;
            background: #eee;
            margin: 5px;

            float: right;
        }
    </style>
    <div id='fi-form$formu'></div>";
echo $valor;

}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
WARNING: si existe un error cuelga la vista
Esta funcion crea un iframe
$divlistado= donde hace el llamado
$div= importante este va como nombre del div y del div_2 y debe esta en la vista
$titulo= titulo de la ventana
$url= controlador y vista a donde va el formulario 
$formulario= nombre del formulario a llamar
$tipo= monta botones de guardar y cerrar debo documentar
$animation= animacion de la ventana pero depende de siempre tener el id del div
$width= tamaño en width de la ventana por defecto esta en 80%
$height= tamaño en height de la ventana por defecto esta en 80%
	Nota: usada para integrar otros sistemas web a modo consulta
Ejemplo:
    $this->Vista->iframe($divlistado,$div,'titulo de la ventana','Tucontrolador/tufuncion',$formulario,'guardar',0,'80%','90%');
**/
function iframe($divlistado=DVENTANA,$div=null,$titulo='',$url=null,$formulario=null,$tipo='editor',$animation=0,$width='80%',$height='80%') {

if($tipo=='pdf'){
$url=pdf."/web/viewer.php?pdf=$url";
$tipo='pdf';
}else if($tipo=='ayuda'){
$url=pdf."/web/viewer.php?pdf=$url";
$tipo='ayuda';
}else if($tipo=='editor'){
$url=editor.'/index.php';
$tipo='editorwebkit';
}else{
$url=$url;
$tipo='editorweb';
}
if($animation==1)$animation="animateTarget: '".$div."',"; else$animation="animateTarget: 'title_".DLOAD."',";


$titulo=$this->Interfaz->mayus($titulo);
$div2=$div.'_2';
$valor="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";
$valor.="
<style type='text/css'>
.editorwebkit {
    background-image:url(img/iconos/icons/editorwebkit.png);
}
.editorweb {
    background-image:url(img/iconos/icons/editorweb.png);
}
.archivepdf {
    background-image:url(img/iconos/icons/archivepdf.png);
}
.pdf {
    background-image:url(img/iconos/icons/pdf.png);
		background-size: 16px 16px;
}
.ayuda {
    background-image:url(img/iconos/icons/system-help1.png);
		background-size: 16px 16px;
}


</style>


<script type='text/javascript'>

Ext.onReady(function() {
    var ventana ,
    ventana=Ext.create('Ext.window.Window', {

				title: '$titulo <span id=\'title_filset_ventna\'></span>',
        layout: 'fit',
        width: '$width',
        height: '$height',
        minWidth: '30%',
				minHeight: '40%',
				layoutManagedWidth:2,
       	contentEl: '$div2',
        maximizable: true,
				iconCls: '$tipo',
				".$animation."
				constrain: true,
				modal: true,
				autoScroll: false,

/*  
	toggle:true,
        frame: true,

	resizable: true,

*/
    	   closable: true,
	//closeAction: 'win',

		hideLabel: true,
		floatable: true,
		bodyStyle: 'padding: 0px;background-color:#FFFFFF;',

 		items: []


";
$valor.="

    });


ventana.show();

});

</script>";

$valor.="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";


$mkdir=mktime(date('his'));

$valor.="
<div id='".$div."_2' style='display:none;' class='x-hide-display'>
<iframe id='".$mkdir."' src='".$url."' width='100%' height='100%' border='0' frameborder='0'></iframe>
</div>

";



echo $valor;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
  WARNING: si existe un error cuelga la vista
  Funcion redirectsistema
	$titulo: titulo de la edireccion por no existir una ruta
	$animation: animacion de la ventana pero depende de siempre tener el id del div
  $width= tamaño en width de la ventana por defecto esta en 80%
	$height= tamaño en height de la ventana por defecto esta en 80%
	Nota: Esta funcion es solo para redireccion de no existir una ruta, solo usar por el administrador
  Ejemplo:
        $this->Vista->redirectsistema('Usuario XXXX Persona posee tantos sistemas',0);
**/
function redirectsistema($titulo='',$animation=0,$width='80%',$height='80%') {
$divlistado=DVENTANA;$div=DVENTANA;
if($animation==1)$animation="animateTarget: '".$div."',"; else$animation="animateTarget: 'title_".DLOAD."',";

$titulo=$this->Interfaz->mayus($titulo);
$div2=$div.'_2';
$valor="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";
$valor.="

<style type='text/css'>
.grid {
    background-image:url(img/iconos/icons/grid.png);
}
.folder_wrench {
    background-image:url(img/iconos/icons/folder_wrench.png);
}
.gogle {
    background-image:url(img/iconos/icons/gogle.png);
}
.plugin_add {
    background-image:url(img/iconos/icons/plugin_add.png);
}
.gogle_palena {
    background-image:url(img/iconos/icons/gogle_palena.png);
}
.book {
    background-image:url(img/iconos/icons/book.png);
}
.cross {
    background-image:url(img/iconos/icons/cross.gif);
}
.accept {
    background-image:url(img/iconos/icons/accept.png);
}



</style>

<script type='text/javascript'>

Ext.onReady(function() {
    var ventana ,
    ventana=Ext.create('Ext.window.Window', {
//        id : 'mensaje',
				title: '$titulo <span id=\'title_filset_ventna\'></span>',
        layout: 'fit',
//	layout: 'border',
  //    width: '80%',
  //    height: '80%',
        width: '$width',
        height: '$height',
        minWidth: '30%',
	minHeight: '40%',
	layoutManagedWidth:2,
    	contentEl: '$div2',
      maximizable: false,
	iconCls: 'grid',
	".$animation."
//	animateTarget: 'menu0',
//  collapsed: true,
//  collapsible: true,
	constrain: true,
	modal: true,
	autoScroll: true,

/*  
	toggle:true,
  frame: true,
	resizable: true,
*/
   closable: false,
	//closeAction: 'win',
		hideLabel: true,
		floatable: true,
		bodyStyle: 'padding: 5px;background-color:#FFFFFF;',

 		items: [/*{
                    region: 'west',
                    title: 'Menu de Opciones',
                    width: 200,
                    split: true,
                    floatable: false,
		    contentEl: '".DVENTANA."'
                }*/]
";

$valor.="
    });
ventana.show();
});
</script>";
$valor.="<script type='text/javascript'>
if(document.getElementById('$div2')!=null)
document.getElementById('$div2').style.display='block';
</script>";
echo $valor;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
  WARNING: si existe un error cuelga la vista
  Funcion mensaje
	$titulo: titulo de la edireccion por no existir una ruta
	$animation: animacion de la ventana pero depende de siempre tener el id del div
  $width= tamaño en width de la ventana por defecto esta en 80%
	$height= tamaño en height de la ventana por defecto esta en 80%
	Nota: Esta funcion es solo para redireccion de no existir una ruta, solo usar por el administrador
  Ejemplo:
        $this->Vista->redirectsistema('Usuario XXXX Persona posee tantos sistemas',0);
**/
function mensaje($mensaje,$titulo,$campo='vacio') {


if(!isset($mensaje))$mensaje='Indique un mensaje';
if(!isset($titulo))$titulo='MENSAJE';


$valor="
<script type='text/javascript'>
Ext.onReady(function() {
Ext.MessageBox.alert('".strtr(strtoupper($titulo),"àèìòùáéíóúçñäëïöü","ÀÈÌÒÙÁÉÍÓÚÇÑÄËÏÖÜ")."', '".ucwords(strtolower($mensaje))."', null);

});
</script>
";
if($campo!='vacio')
{
//$imagen='/css/tabs/images/default/form/exclamation.gif';
$imagen='/img/iconos/flecha/flecha_roja.png';
$valor.="<script type='text/javascript'>
//document.getElementById('".$campo."_em').innerHTML='&nbsp;<img src=\'$imagen\' width=\'13px\' height=\'13px\'><font color=\'red\' style=\'cursor:pointer;\'>&nbsp;<b>Error</b></font>';
//document.getElementById('".$campo."').focus();

</script>";
}


echo $valor;

}
function title($title='')
{
		echo '<script type=\'text/javascript\'>document.getElementById(\'title_'.DLOAD.'\').innerHTML=\'<font class="fondocakeosdsssistema"><b>'.$title.'</b></font>\';</script>';
		echo "<script type='text/javascript'>document.getElementById('title_navegador').innerHTML='$title / ".sistema."';</script>";
}




}
?>
